home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 2
/
Atari Mega Archive CD - Volume 2.iso
/
8bit
/
utility
/
argsos3.doc
next >
Wrap
Text File
|
1995-04-22
|
5KB
|
172 lines
Here it is, ARGS-OS 3. It is a modified ROMDisk OS by Ralf David / Klaus
Peters, but Klaus Peters (distributer) agreed that Roland Buehler uses it.
ARGS-OS 3 was mainly made by Roland Buehler but I did the final work, so here
is my doc:
If you want to use it, you'll have to UNARC the file ARGSOS3.ARC and burn it
on an 128KBit-Eprom (27128). Then either replace the old OS with it or use a
switch to select between them (I hope you know how).
ROMDisk-OS features:
====================
- highspeed SIO-routine for upgraded drives (about 76000 baud)
(if it fails use function key + Shift-Control-U)
- mini-monitor: Start with function-key + Shift-Control-M
(use with +, *, Shift-+, Shift-*, A, ESC)
- supports the ROMDisk (of course)
Additional ARGS-OS features:
============================
- supports the ARGS-Centronics-cartridge
(if this cart is not fitted, the normal P:-handler is used)
- includes the ZRAM-DMA routine to use expansion-Ram
Disadvantages:
==============
- The monitor-function conflicts with the Shift-Control-M command of ACTION!
- No self-test (have you ever needed it?)
- no international charset
- any expansion using $D506 may confuse the "P:"-handler
- a small bug for all users without ROMDisk: the ROMDisk-OS was mainly
build to support the ROMDisk - it doesn't check wether a ROMDisk is
plugged in or not. If you want to use "D2:" you'll have to put the
non-existing ROMDisk to another number (function key + Control +
Number). In the next weeks I won't have time to fix this, sorry.
===============================
Important Pokes in the ARGS-OS:
===============================
$CFC8-$CFCE (53192-53198): ASCII-String "ARGS-OS"
$CFCF (53199): version (now: 3)
$CFD0-CFE7 (53200-53223): jumptable
$CFE8-CFFF (53224-53247): jumptable for BASIC
used |normal |BASIC
entries: |Hex |Decimal |Hex |Dezimal
----------------+---------------+---------------+---------------+--------
ZRam-DMA |$CFD0 |53200 |$CFE8 |53224
----------------+---------------+---------------+---------------+--------
don't care if you don't have the ARGS-Centronics-cart:
EOL <-> CR | | | |
translation: | | | |
Off |$CFD3 |53203 |$CFEB |53227
On |$CFD6 |53206 |$CFEE |53230
----------------+---------------+---------------+---------------+--------
How to use the normal ZRam-DMA:
-------------------------------
The ZRam-DMA uses several bytes ($D6 - $E2) in the Zeropage. If you use the
routine from a language other than BASIC, you'll have to set the following
variables:
mode ($D6): 0 -> read from expansion memory
else -> write into expansion memory
ZRam-address ($D7/$D8): address in the expansion memory
normal adress ($DB/$DC): address in the normal RAM
length ($DD/$DE): length of the block to transfer
block ($DF): mask for the chosen block (see below)
Then just jump to $CFD0.
How to use it with BASIC:
-------------------------
No Peeks, no Pokes, just one USR-routine:
A=USR( 53224, <mode: 4 or 8>, <address in expansion Ram>,
<address in normal Ram, e.g. ADR(A$)>,
<length of block>, <chosen block (see below)> )
(in BASIC this call has to be in ONE line, of course)
mode: '4' means "read from expansion Ram"
'8' means "write into expansion Ram"
Example:
The command
A=USR( 53224, 4, 10000, ADR(A$), 3333, 224 )
reads 3333 Bytes from the expansion Ram (address 10000, block 224) into
the string A$.
How to choose a block:
---------------------
With 'block' I mean a sequence of 4 banks,
e.g. $E3, $E7, $EB, $EF
or $23, $27, $2B, $2F
The routine takes the chosen block, adds a value ($03, $07, $0B or $0F)
and switches to the corresponding bank like:
POKE PORTB, (block OR <3/7/$B/$F>) AND PEEK(PORTB)
You don't have to worry about this if you have a XE-compatible expansion.
Reasonable values for blocks are:
64K expansion RAM:
$E0 (224)
256K expansion RAM:
$E0 (224)
$A0 (160)
$60 (96)
$20 (32)
I am not quite sure how to use it with an 1MB Axlon-expansion - any
suggestions are welcome!
I think it does not work with a 4MB expansion, but if anyone needs this by
all means then write to me!
Users who want to use it with a Peters 1MB-expansion have to set the segment
number (0-3) in $D600 (54784), if you want to use the full 1MB.
========
Caution:
========
- Be sure that the highest expansion-address:
<address in expansion memory> + <length> - 1
is below $10000 (65536)!
- Your screenmemory shouldn't be between $4000-$7FFF (16384 - 32767), or
you'll get rubbish on your screen while using the ZRam-DMA.
- I tested it with BASIC but until now not (really) with assembler!
Bug reports (including errors and insufficent English in this doc),
suggestions for improvement and additional features (there isn't much space
left!) please send to:
jscharrl@ba-stuttgart.de
Jochen Scharrlach
Vordernbergstr. 27
70191 Stuttgart
Germany
or (if you are also interested in ARGS-Hardware)
Roland Buehler
Engelgasse 21
72348 Rosenfeld
Germany